package com.vegetable.modules.service.stock;

import com.vegetable.modules.entity.stock.CostWeightChangeSource;
import com.vegetable.modules.entity.stock.Stock;

/**
 * <p>
 * 连锁成本变化服务接口
 * </p>
 *
 * @author wangruijie
 * @since 2024-03-21
 */
public interface IChainCostChangeService {

    /**
     * 处理连锁成本变化
     * @param rootChange 根变化源
     * @param affectedStock 受影响的库存
     * @param originalStock 变化前的库存
     */
    void handleChainCostChange(CostWeightChangeSource rootChange, Stock affectedStock, Stock originalStock);

    /**
     * 查找并处理所有连锁变化
     * @param changeSource 变化源
     */
    void findAllAndHandleChainChanges(CostWeightChangeSource changeSource);
}